<?php
/**
 * @version 1.0
 * @since June-2008
 * @package lib
 * @subpackage data
 * @name CArrayTable
 * @deprecated Lớp lưu trữ bằng file. Sử dụng cách ghi kiểu CVS để lưu các trường trong một bản ghi
 * @todo Lớp mở rộng từ lớp CTable
*/
class CArrayTable extends CTable
{
	/**
	 * @var Thuộc tính handle của file
	 */
	public $items = array();
	/**
	 * Phương thức khởi tạo một đối tượng file
	 * @param $file_name string Tên file lưu dữ liệu
	 */
	function __construct($items)
	{
		if(!$items)
		{
			$this->items = array();
		}
		elseif(is_array($items))
		{
			$this->items = $items;
		}
		elseif(is_string($items)) 
		{
			eval('$this->items='.$items.';');
		}
		parent::__construct('');
	}
	/**
	 * PHương thức lấy ra một bản ghi của file
	 *
	 * @param $table string Tham số ảo để kế thừa từ lớp trừu tượng CStore
	 * @param $condition mixed Điều kiện select. Tham số ảo để kế thừa từ lớp CStore 
	 * @param $options mixed Các tham số để select. Tham số ảo để kế thừa từ lớp CStore 
	 * @return mixed Bản ghi đầu tiên của file
	 */
	function select($condition = false, $options = array())
	{
		$result = CList($this->items)->filter($condition);
		if($result)
		{
			return reset($result);
		}
		return array();
	}
	/**
	 * Phương thức lấy ra tất cả các bản ghi của file
	 *
	 * @param $table string Tham số ảo để kế thừa từ lớp trừu tượng CStore
	 * @param $condition mixed Tham số ảo để kế thừa từ lớp CStore 
	 * @param $options mixed Tham số ảo để kế thừa từ lớp CStore 
	 * @return mixed Một mảng chứa tất cả các bản ghi của file
	 */
	function select_all($condition = false, $options = array())
	{
		return CList($this->items)->filter($condition);
	}
	
	/**
	 * Phương thức chèn một bản ghi mới vào trong file
	 *
	 * @param Tham số ảo $table
	 * @param Tham số giá trị của các bản ghi $values có kiểu mảng
	 */
	function &save($values = false)
	{
		if(isset($values['id']))
		{
			$this->items[$values['id']] = $values;
		}
		else 
		{
			$this->items[] = $values;
		}
		return $this;
	}
	function &update($values, $condition = false)
	{
		$items = $this->select_all($condition);
		foreach($items as $id=>$item)
		{
			if(isset($values['id']) and $values['id']!=$id)
			{
				$this->items[$values['id']] = $this->items[$id];
				unset($this->items[$id]);
				$id = $values['id'];
			}
			foreach($values as $key=>$value)
			{
				$this->items[$id][$key] = $value;
			}
		}
		return $this;
	}
	function &delete($condition = false)
	{
		$items = $this->select_all($condition);	
		foreach($items as $id=>$item)
		{
			unset($this->items[$id]);
		}
		return $this;
	}
	function to_string()
	{
		return var_export($this->items,1);
	}
	function __toString()
	{
		return $this->to_string();
	}
}
/**
 * Hàm này để khởi tạo đối tượng thuộc lớp CFileStore
 * @param Tên file $file_name
 * @return Đối tượng  CFileStore gắn với tên file là fine_name
 */
function CArrayTable($items)
{
	return new CArrayTable($items);
}
?>